単体テストの概要
アプリが引き続き動作することを確認するにはどうすればよいですか さらに機能を追加しますか、それとも既存の機能を変更しますか? テストを書くことによって。
単体テストは、単一関数の動作を検証するのに便利です。
メソッドとかクラスとか。のtest
パッケージが提供するのは、
単体テストを作成するためのコア フレームワークと、flutter_test
パッケージには、ウィジェットをテストするための追加ユーティリティが含まれています。
このレシピでは、test
パッケージ
次の手順を使用します。
- を追加します。
test
またflutter_test
依存。 - テストファイルを作成します。
- テストするクラスを作成します。
- 書く
test
私たちのクラスのために。 - 複数のテストを 1 つに結合する
group
。 - テストを実行します。
テスト パッケージの詳細については、 を参照してくださいテストパッケージのドキュメント。
1. テストの依存関係を追加する
のtest
パッケージは、コア機能を提供します
Dart でテストを作成します。これは次の場合に最適なアプローチです。
Web、サーバー、Flutter アプリで使用されるパッケージを作成します。
追加するには、test
開発依存関係としてのパッケージ、
走るflutter pub add
:
$ flutter pub add dev:test
2. テストファイルを作成する
この例では、2 つのファイルを作成します。counter.dart
とcounter_test.dart
。
のcounter.dart
ファイルにはテストするクラスが含まれており、
に住んでいますlib
フォルダ。のcounter_test.dart
ファイルには含まれています
テスト自体が内部に存在します。test
フォルダ。
一般に、テスト ファイルはtest
フォルダ
Flutter アプリケーションまたはパッケージのルートにあります。
テスト ファイルは常に次で終わる必要があります。_test.dart
、
これは、テストランナーがテストを検索するときに使用する規則です。
完了すると、フォルダー構造は次のようになります。
counter_app/
lib/
counter.dart
test/
counter_test.dart
3. テストするクラスを作成する
次に、テストする「ユニット」が必要です。覚えておいてください:「ユニット」はユニットの別名です。
関数、メソッド、またはクラス。この例では、Counter
クラス
の中でlib/counter.dart
ファイル。インクリメントを担当します
そして、value
から始まる0
。
class Counter {
int value = 0;
void increment() => value++;
void decrement() => value--;
}
ノート:わかりやすくするために、このチュートリアルは「テスト駆動」に従っていません。 「開発」アプローチ。そのスタイルの方が慣れている場合は、 開発の場合、いつでもその道を進むことができます。
4. クラスのテストを作成します
内部counter_test.dart
ファイルに最初の単体テストを書き込みます。テストは
トップレベルを使用して定義されるtest
関数を実行し、結果がどうかを確認できます
トップレベルを使用すると正しいですexpect
関数。
これらの関数は両方とも、test
パッケージ。
// Import the test package and Counter class
import 'package:counter_app/counter.dart';
import 'package:test/test.dart';
void main() {
test('Counter value should be incremented', () {
final counter = Counter();
counter.increment();
expect(counter.value, 1);
});
}
group
5. 複数のテストを 1 つに結合します。相互に関連する複数のテストがある場合、
を使用してそれらを結合しますgroup
によって提供される機能test
パッケージ。
import 'package:counter_app/counter.dart';
import 'package:test/test.dart';
void main() {
group('Counter', () {
test('value should start at 0', () {
expect(Counter().value, 0);
});
test('value should be incremented', () {
final counter = Counter();
counter.increment();
expect(counter.value, 1);
});
test('value should be decremented', () {
final counter = Counter();
counter.decrement();
expect(counter.value, -1);
});
});
}
6. テストを実行する
これで、Counter
テストが実施されたクラス、
テストを実行できます。
IntelliJ または VSCode を使用してテストを実行する
IntelliJ および VSCode 用の Flutter プラグインは、テストの実行をサポートしています。 これは、多くの場合、テストを作成する際に最適なオプションです。 最速のフィードバック ループとブレークポイントを設定する機能。
-
インテリJ
- を開きます
counter_test.dart
ファイル - を選択
Run
メニュー - クリック
Run 'tests in counter_test.dart'
オプション - または、適切なキーボード ショートカットを使用します。 あなたのプラットフォームに合わせて。
- を開きます
-
VSコード
- を開きます
counter_test.dart
ファイル - を選択
Run
メニュー - クリック
Start Debugging
オプション - または、適切なキーボード ショートカットを使用します。 あなたのプラットフォームに合わせて。
- を開きます
ターミナルでテストを実行する
次のコマンドを実行して、ターミナルを使用してテストを実行することもできます。 プロジェクトのルートからコマンドを実行します。
flutter test test/counter_test.dart
単体テストに関するその他のオプションについては、次のコマンドを実行できます。
flutter test --help